<?php

require_once 'Framework/Controller/Action.php';

/**
 * Управление гостем на входе
 *
 */
class GuestController extends Framework_Controller_Action
{
    public function init()
    {
        //Залогиненому здесь нечего делать, редиректим на его страницу
        if (true === $this->session->get('logged_in')) {
            $this->_redirect('/home/');
        }
        $this->view->not_auth = !$this->session->get('logged_in');
    }
    
    /**
     * redirect
     *
     */
    public function indexAction()
    {
        $this->_redirect('/user/');
    }
    
    /**
     * Авторизация
     *
     */
    public function loginAction()
    {
        if ($this->getRequest()->getMethod() != 'POST') { // Not a POST request
             
        } else { // Handle log-in form
            $login = get_value($this->getRequest()->getPost('login'));

            if (empty($login)) {
                $this->view->error = 'Enter your name';
            } else if (!($guest = User_Guest::create($login))) {
                $this->view->error = "'$login' is used";
            } else {
                $this->session->set('guest_logged_in', true);
                $this->session->set('guest_login', $login);
                $this->session->set('guest_id', $guest->getUserId());
                
                // Редиректим на страницу с которой пришел
                if ($query_string_referer = $this->session->get('http_referer')) {
                    $this->_redirect($query_string_referer);
                } else if ($query_string_referer = $this->session->get('room_http_referer')) {
                    $this->_redirect($query_string_referer);
                }
                
                $this->_redirect('/');
            }
        }
        $this->render();
    }
    
    /**
     * Выход
     *
     */
    public function logoutAction()
    {
        // Отключаем гостя в таблице user
        User_Guest::disable($this->session->get('guest_id'));
        
        //Зачищаем юзера в комнатах
        Room::clean($this->session->get('guest_id'));

        $this->session->destroy(true);
        $this->_redirect('/');
    }
}
